﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using produccion.vistamodelo;
using System.ComponentModel;

namespace produccion.forms
{
    /// <summary>
    /// Lógica de interacción para FRMcrearMaterial.xaml
    /// </summary>
    public partial class FRMcrearMaterial : Window
    {
        public crearMaterial _crearMaterial;
        public string retorno="";

        public FRMcrearMaterial()
        {
            InitializeComponent();
            _crearMaterial = (crearMaterial)this.DataContext;
        }
        
        private void comGru_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            //_crearMaterial.cargarSubgrupos();
            _crearMaterial.material = "";
        }

        private void butCrear_Click(object sender, RoutedEventArgs e)
        {
            _crearMaterial.crearMat();
            retorno = _crearMaterial.material;
            this.Close();
        }

        private void butCancel_Click(object sender, RoutedEventArgs e)
        {
            _crearMaterial.material = "";
            retorno = "";
            this.Close();
        }

        private void comSub_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            _crearMaterial.material = "";
        }

        private void botBusGru_Click(object sender, RoutedEventArgs e)
        {
            clases.CLSMAEGRP datos = new clases.CLSMAEGRP();
            FRMbuscar f = new FRMbuscar(datos, "buscar", "Nombre", "NOMGRP_GRP", "Codigo");
            f.ShowDialog();

            if (f.retorno != "")
            {
                _crearMaterial.selgrupo = f.retorno;
            }
        }

        private void botBusSub_Click(object sender, RoutedEventArgs e)
        {
            clases.CLSMAESUB datos = new clases.CLSMAESUB();
            datos.CODGRP_SUB = _crearMaterial.selgrupo;
            FRMbuscar f = new FRMbuscar(datos, "buscar", "Nombre", "NOMSUB_SUB", "Codigo");
            f.ShowDialog();
            if (f.retorno != "")
            {
                _crearMaterial.selsubgru = f.retorno;
            }
        }
        
    }
    
    public class crearMaterial:ObservableObject 
    {

        public crearMaterial()
        {
            cargar_Grupos();

            MDOgeneral.conectar();
            strTituloVentana = "Crear material - Usuario: " + MDOgeneral.usuario + " - [FRMcrearMaterial]";
        }

        //----------------------------------------------
        private string _strTituloVentana;
        public string strTituloVentana
        {
            get { return _strTituloVentana; }
            set { _strTituloVentana = value; RaisePropertyChangedEvent("strTituloVentana"); }
        }

        private VMbuscarGeneral _buscarGrupo;
        public VMbuscarGeneral buscarGrupo
        {
            get { return _buscarGrupo; }
            set { _buscarGrupo = value;  RaisePropertyChangedEvent("buscarGrupo");  }
        }

        private VMbuscarGeneral _buscarSubgrupo;
        public VMbuscarGeneral buscarSubgrupo
        {
            get { return _buscarSubgrupo; }
            set { _buscarSubgrupo = value; RaisePropertyChangedEvent("buscarSubgrupo"); }
        }

        private void cargar_Grupos()
        {
            try
            {
                _buscarGrupo = new VMbuscarGeneral((from gru in grupos
                    select new VMlistaGenerica { strColumna1 = gru.CODGRP_GRP, strColumna2 = gru.NOMGRP_GRP }).ToList());
                buscarGrupo.PropertyChanged += onBuscarGrupoPropertyChanged;
                buscarGrupo.gridBuscar.columna1.strNombre = "Código";
                buscarGrupo.gridBuscar.columna2.strNombre = "Nombre grupo";
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }

        private void cargar_Subgrupos()
        {
            try
            {
                buscarSubgrupo = new VMbuscarGeneral((from sub in subgrupos
                   select new VMlistaGenerica { strColumna1 = sub.CODSUB_SUB, strColumna2 = sub.NOMSUB_SUB }).ToList());
                buscarSubgrupo.PropertyChanged += onBuscarSubgrupoPropertyChanged;
                buscarSubgrupo.gridBuscar.columna1.strNombre = "Código";
                buscarSubgrupo.gridBuscar.columna2.strNombre = "Nombre subgrupo";
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }

        void onBuscarGrupoPropertyChanged(object sender, PropertyChangedEventArgs e)
        {
            try
            {
                if (e.PropertyName == "IsOpen")
                {
                    if (!buscarGrupo.IsOpen)
                    {
                        if (buscarGrupo.gridBuscar.selLista != null)
                        {
                            selgrupo = buscarGrupo.gridBuscar.selLista.strColumna1;
                        }
                    }
                }
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }

        void onBuscarSubgrupoPropertyChanged(object sender, PropertyChangedEventArgs e)
        {
            try
            {
                if (e.PropertyName == "IsOpen")
                {
                    if (!buscarSubgrupo.IsOpen)
                    {
                        if (buscarSubgrupo.gridBuscar.selLista != null) {
                            selsubgru = buscarSubgrupo.gridBuscar.selLista.strColumna1;
                        }
                            
                    }
                }
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }

        RelayCommand _cmdBuscarGrupo;
        public ICommand cmdBuscarGrupo
        {
            get
            {
                if (_cmdBuscarGrupo == null)
                {
                    _cmdBuscarGrupo = new RelayCommand(r => buscarGrupos());
                }
                return _cmdBuscarGrupo;
            }
        }

        RelayCommand _cmdBuscarSubgrupo;
        public ICommand cmdBuscarSubgrupo
        {
            get
            {
                if (_cmdBuscarSubgrupo == null)
                {
                    _cmdBuscarSubgrupo = new RelayCommand(r => buscarSubgrupos());
                }
                return _cmdBuscarSubgrupo;
            }
        }

        public void buscarGrupos()
        {
            try
            {
                buscarGrupo.IsOpen = true;
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }

        public void buscarSubgrupos()
        {
            try
            {
                if (buscarSubgrupo != null)
                {
                    buscarSubgrupo.IsOpen = true;
                }
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }

        //Enlazado de combox
        List<clases.CLSMAEGRP> _grupos = new clases.CLSMAEGRP().listaGrupos();
        public List<clases.CLSMAEGRP> grupos
        {
            get { return _grupos; }
            set { _grupos = value; RaisePropertyChangedEvent("grupos"); }
        }
        
        //Enlazado
        List<clases.CLSMAESUB> _subgrupos = new List<clases.CLSMAESUB>();
        public List<clases.CLSMAESUB> subgrupos
        {
            get { return _subgrupos; }
            set { _subgrupos = value; RaisePropertyChangedEvent("subgrupos");}
        }


        private string _selgrupo="";
        public string selgrupo
        {
            get { return _selgrupo; }
            set { _selgrupo = value;
                RaisePropertyChangedEvent("selgrupo");
                if (!String.IsNullOrEmpty(_selgrupo))
                {
                    cargarSubgrupos();
                    cargar_Subgrupos();
                }
            }
        }

        private string _selsubgru="";
        public string selsubgru
        {
            get { return _selsubgru; }
            set { _selsubgru = value; RaisePropertyChangedEvent("selsubgru"); }
        }

        string _material="";
        public string material 
        {
            get { return _material; }
            set { _material = value; RaisePropertyChangedEvent("material"); }
        }

        public void crearMat() 
        {
            try
            {
                material = new clases.CLSMAEMAT { CODGRP_MAT = selgrupo,CODSUB_MAT=selsubgru }.CrearMaterial();
            }
            catch (Exception ex) { MessageBox.Show(ex.Message); }
        }

        public void cargarSubgrupos()
        {
            subgrupos = new clases.CLSMAESUB { CODGRP_SUB = selgrupo }.listaSubg();
        }

    
    }
}
